package com.aranandroid.customview.edit

import android.text.InputFilter
import com.blankj.utilcode.util.ToastUtils
import java.util.regex.Matcher
import java.util.regex.Pattern

/**
 *Author: Amin
 *Data: 2021/10/14 14:34
 *
 *Description: Edit的InputFilter
 *
 */
object EditTextInpitType {

    // 中英文 数字
    val chineseEnglishDigit = "[a-zA-Z0-9|\u4e00-\u9fa5]+"
    // 中英文
    val chineseEnglish = "[a-zA-Z|\u4e00-\u9fa5]+"
    // 英文 数字
    val englishDigit = "[a-zA-Z0-9]+"
    // 数字
    val digitalDigit = "[0-9]+"
    // 英文 数字
    val tip = "不支持特殊符号"
    val tip2 = "只支持数字"
    val tip3 = "不支持汉字及特殊符号"
    val tip4 = "不支持数字及特殊符号"


    /**
     * 正则表达式控制输入
     * @param string 正则
     */
    fun inputType(string: String): InputFilter {
        val typeFilter = InputFilter { source, start, end, dest, dstart, dend ->
            val p: Pattern = Pattern.compile(string)
            val m: Matcher = p.matcher(source.toString())
            if (!m.matches()) "" else null
        }
        return typeFilter
    }

    /**
     * 正则表达式控制输入
     * @param string 正则
     * @param tip 错误提示
     */
    fun inputType(string: String, tip: String): InputFilter {
        val typeFilter = InputFilter { source, start, end, dest, dstart, dend ->
            if (source.isNullOrEmpty()){
                null
            }else{
                val p: Pattern = Pattern.compile(string)
                val m: Matcher = p.matcher(source.toString())
                // 返回null添加上 返回“”不添加
                if (!m.matches()) {
                    ToastUtils.showShort(tip)
                    ""
                } else null
            }

        }
        return typeFilter
    }
}